Пакетное копирование. Пакет на основе даты

Редактировал(а) Alexandr Fokin 2023/12/16 14:12

  
 -- Копируем актуальные данные (за последние 3 месяца)
DECLARE @dateStart datetime = DATEADD(MONTH, -3, GETDATE())
DECLARE @dateStop datetime = GETDATE()
DECLARE @weekStep int = 2

DECLARE @curStart datetime = @dateStart
DECLARE @curStop datetime = DATEADD(WEEK, @weekStep, @curStart)


WHILE (1=1)
BEGIN
INSERT INTO dbo.NewTable ([Id], [Data], [DateAdded])
SELECT [Id], [Data], [DateAdded]
FROM [dbo].[OldTable]
WHERE
[DateAdded] BETWEEN @curStart AND @curStop

SET @curStart = @curStop
SET @curStop = DATEADD(WEEK, @weekStep, @curStart)

IF (@curStart > @dateStop)
BEGIN
BREAK
END
END
  
Теги: SqlQuery